package com.y.simple.utils;


import cn.hutool.jwt.JWT;
import cn.hutool.jwt.JWTHeader;
import com.y.simple.bean.LoginUserMsg;

public class TokenUtil {

    // 密钥
    static byte[] key = "password".getBytes();

    /**
     * <h1>生成一个只包含用户信息的 token</h1>
     * @param msg 登录用户信息
     * @return token
     */
    public static String createToken(LoginUserMsg msg) {
        return JWT.create()
                .setPayload("id", String.valueOf(msg.getId()))
                .setPayload("power", msg.getPower())
                .setPayload("type", msg.getType())
                .setKey(key)
                .sign();
    }

    /**
     * 检查 token
     * @param token token
     * @return 是否通过
     */
    public static boolean checkToken(String token) {
        return JWT.of(token).setKey(key).verify();
    }

    /**
     * <h1>从 ThreadLocal 中读出用户信息</h1>
     * @param token token
     * @return userMsg
     */
    public static LoginUserMsg readToken(String token) {
        JWT jwt = JWT.of(token);
        jwt.getHeader(JWTHeader.TYPE);
        jwt.getHeader(JWTHeader.ALGORITHM);
        LoginUserMsg loginUserMsg = new LoginUserMsg();
        String id = (String) jwt.getPayload("id");
        String power = (String) jwt.getPayload("power");
        String type = (String) jwt.getPayload("type");
        loginUserMsg.setId(Integer.valueOf(id));
        loginUserMsg.setType(type);
        loginUserMsg.setPower(power);
        return loginUserMsg;
    }


    public static void main(String[] args) {
    }


}
